The JEditTextArea class has a new addToLeftOfScrollBar() method that adds a component to the left of the scroll bar. Previously plugins like JDiff had to resort to undocumented hacks to do this.
The code that displays lines of text on screen has been overhauled for improved performance and correctness. As a result, two methods in JEditTextArea that have been deprecated since jEdit 4.0 were removed:
xToOffset()
offsetToX()
As in jEdit 4.0 and 4.1, the xyToOffset() and offseToXY() methods replace these two.
Also, the way folds are handled has changed. The FoldVisibilityManager class has been removed, and a number of methods in the JEditTextArea class have been removed also:
virtualToPhysical()
physicalToVirtual()
getVirtualLineCount()
The replacement for the FoldVisibilityManager class is a class named DisplayManager, with a similar but not identical API.
Previously, a “virtual line number” was a line number such that each physical line (delimited by \n) counted as 1 if it was visible, and 0 if it was not. They did not take into account lines that were split on screen as a result of soft wrap, and this made the soft wrap scrolling code rather complicated.
In jEdit 4.2, virtual line numbers are no longer used internally; now, similar “scroll line numbers” are used. Scroll line numbers take both hidden lines and soft wrap into account. The getFirstLine() and setFirstLine() methods of the JEditTextArea class now work with scroll line numbers.
An internal API for converting between scroll line numbers and physical line numbers exists, but it is rather complicated and it will not be made public. Instead, if you want the text area to scroll to a given physical line number, use the new setFirstPhysicalLine() method in the JEditTextArea class.
Instead of calling FoldHandler.registerFoldHandler() in your plugin's start() method, add entries in the services.xml file that look like so:
<SERVICE CLASS="org.gjt.sp.jedit.buffer.FoldHandler" NAME="sidekick"> new sidekick.SideKickFoldHandler() </SERVICE> |